package core;

import utils.Utils;

public class ParameterBuilder//synchronize
{
    public static final String REASON_BREAKING = "BreackDown";
    public static final String REASON_REFUSE = "RefuseOrder";

	public byte[] createLogin(int GroupID,String loginName,String password,boolean IsUniqConnection)//������� ������������ ������ ��� �������������
	{
		int size;
		int index;
		byte[] result;
		byte[] temp;
		byte[] tempSize;
		//������ � ������ ������
		String command = "IMAP.Net.SrvLogin";
		//��������� ������ ������
		try
		{
			tempSize = Utils.stringToByteUTF(loginName);
			temp = Utils.stringToByteUTF(password);
		}
		catch(Exception e)
		{
			tempSize = loginName.getBytes();
			temp = password.getBytes();
		}
		size  = 44+tempSize.length+temp.length;
		result = new byte[size];
		index = 0;
		//���������� ������ ������ � ������ 4 �����
		temp = Utils.int32ToByte(size-8);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� ������ ���������
		temp = Utils.int32ToByte(1);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� ��� ������
		try
		{
			tempSize = Utils.stringToByteUTF(command);
			temp = Utils.int32ToByte(tempSize.length);
		}
		catch(Exception e)
		{
			temp = Utils.int32ToByte(command.length());
		}
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		try
		{
			temp = Utils.stringToByteUTF(command);
		}
		catch(Exception e)
		{
			temp = command.getBytes();
		}
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� ������ �����������
		temp = Utils.int16ToByte(GroupID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� ��� ������������
		try
		{
			tempSize = Utils.stringToByteUTF(loginName);
			temp = Utils.int32ToByte(tempSize.length);
		}
		catch(Exception e)
		{
			temp = Utils.int32ToByte(loginName.length());
		}
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		try
		{
			temp = Utils.stringToByteUTF(loginName);
		}
		catch(Exception e)
		{
			temp = loginName.getBytes();
		}
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� ������ ������������
		try
		{
			tempSize = Utils.stringToByteUTF(password);
			temp = Utils.int32ToByte(tempSize.length);
		}
		catch(Exception e)
		{
			temp = Utils.int32ToByte(password.length());
		}
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		try
		{
			temp = Utils.stringToByteUTF(password);
		}
		catch(Exception e)
		{
			temp = password.getBytes();
		}
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� IsUniqConnection
		result[index++] = Utils.boolToByte(IsUniqConnection);
		//���������� �������� ���� �������� ������ PacketNumber
		temp = Utils.int32ToByte(-1);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}
	
	public byte[] createLogout(int srvID,byte[] guid)
	{
		int size;
		int index;
		byte[] result;
		byte[] temp;
		byte[] tempSize;
		//������ � ������ ������
		String command = "IMAP.Net.SrvLogOut";
		//��������� ������ ������
		size = 54;
		result = new byte[size];
		index = 0;
		//���������� ������ ������ � ������ 4 �����
		temp = Utils.int32ToByte(size-8);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� ������ ���������
		temp = Utils.int32ToByte(1);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� ��� ������
		try
		{
			tempSize = Utils.stringToByteUTF(command);
			temp = Utils.int32ToByte(tempSize.length);
		}
		catch(Exception e)
		{
			temp = Utils.int32ToByte(command.length());
		}
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		try
		{
			temp = Utils.stringToByteUTF(command);
		}
		catch(Exception e)
		{
			temp = command.getBytes();
		}
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� SrvID
		temp = Utils.int32ToByte(srvID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� guid
		for (int i=0;i<guid.length;i++)
		{
			result[index++] = guid[i];
		}
		//���������� �������� ���� �������� ������ PacketNumber
		temp = Utils.int32ToByte(-1);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}
	
	public byte[] createPingAnswer()
	{
		int size;
		int index;
		byte[] result;
		byte[] temp;
		byte[] tempSize;
		//������ � ������ ������
		String command = "IMAP.Net.SrvPingAnswer";
		//��������� ������ ������
		try
		{
			tempSize = Utils.stringToByteUTF(command);
		}
		catch(Exception e)
		{
			tempSize = command.getBytes();
		}
		size = 16+tempSize.length;
		result = new byte[size];
		index = 0;
		//���������� ������ ������ � ������ 4 �����
		temp = Utils.int32ToByte(size-8);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� ������ ���������
		temp = Utils.int32ToByte(1);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� ��� ������
		try
		{
			tempSize = Utils.stringToByteUTF(command);
			temp = Utils.int32ToByte(tempSize.length);
		}
		catch(Exception e)
		{
			temp = Utils.int32ToByte(command.length());
		}
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		try
		{
			temp = Utils.stringToByteUTF(command);
		}
		catch(Exception e)
		{
			temp = command.getBytes();
		}
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� �������� ���� �������� ������ PacketNumber
		temp = Utils.int32ToByte(-1);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}

        public byte[] createSrvTransfereData(String connectionType,int srvID,int destinationID,byte[] guid,boolean log,byte[] body)
	{
            return createSrvTransfereData(connectionType, srvID, destinationID, guid, log, body, -1);
        }
        
	public byte[] createSrvTransfereData(String connectionType,int srvID,int destinationID,byte[] guid,boolean log,byte[] body, int packetNumber)
	{
		int size,index;
		byte[] result,temp;
		//���������� ������ ������
		size = 4+4+Utils.getStringSize("IMAP.Net.SrvTransfereData")+Utils.getStringSize(connectionType)+4+4+16+1+body.length+4;
		//������� ������ ����
		result = new byte[size];
		//��������� �����
		index=0;
		//���������� ������ ������ � ������ 4 �����
		temp = Utils.int32ToByte(size-8);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� ������ ���������
		temp = Utils.int32ToByte(1);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� ��� ������
		temp = Utils.getStringByte("IMAP.Net.SrvTransfereData");
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� connectionType
		temp = Utils.getStringByte(connectionType);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� srvID
		temp = Utils.int32ToByte(srvID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� destinationID
		temp = Utils.int32ToByte(destinationID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//���������� guid
		for (int i=0;i<guid.length;i++)
		{
			result[index++] = guid[i];
		}
		//���������� log 
		result[index++] = Utils.boolToByte(log);
		//���������� body
		for (int i=0;i<body.length;i++)
		{
			result[index++] = body[i];
		}
		//���������� �������� ���� �������� ������ PacketNumber
		temp = Utils.int32ToByte(packetNumber);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}

		return result;
	}
	
	public byte[] createBodyRegisterOnRelay(String nick,boolean fromDriver,int peopleID)
	{
		int size;
		byte[] result,temp;
		int index;
		//���������� ������ �������
		size = 4 + Utils.getStringSize("IMAP.Net.PPCRegisterOnRelay") + Utils.getStringSize(nick) + 1 + 4 ;
		//������� ������ ����
		result = new byte[size];
		//��������� �����
		index = 0;
		//������ ������
		temp = Utils.int32ToByte(size-4);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��� ������
		temp = Utils.getStringByte("IMAP.Net.PPCRegisterOnRelay");
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��������
		temp = Utils.getStringByte(nick);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//������� ����, ��� ����� ���� �� ��������
		result[index++] = Utils.boolToByte(fromDriver);
		//peopleID
		temp = Utils.int32ToByte(peopleID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}

        public byte[] createBodyCarOnAddressRequest(int orderId, int peopleID)
        {
            int size;
            byte[] result,temp;
            int index;
            //���������� ������ �������
            size = 4 + Utils.getStringSize("IMAP.Net.CarOnAddressRequest") + 4 + 4 ;
            //������� ������ ����
            result = new byte[size];
            //��������� �����
            index = 0;
            //������ ������
            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //��� ������
            temp = Utils.getStringByte("IMAP.Net.CarOnAddressRequest");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //orderId
            temp = Utils.int32ToByte(orderId);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //peopleID
            temp = Utils.int32ToByte(peopleID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            return result;
        }

	public byte[] createBodyRegisterOnTaxiParking(int parkingID,String nick,int peopleID)
	{
		int size;
		byte[] result,temp;
		int index;
		//���������� ������ �������
		size = 4 + Utils.getStringSize("IMAP.Net.RegisterOnTaxiParking") + 4 + Utils.getStringSize(nick) + 4 ;
		//������� ������ ����
		result = new byte[size];
		//��������� �����
		index = 0;
		//������ ������
		temp = Utils.int32ToByte(size-4);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��� ������
		temp = Utils.getStringByte("IMAP.Net.RegisterOnTaxiParking");
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//ParkingID
		temp = Utils.int32ToByte(parkingID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��������
		temp = Utils.getStringByte(nick);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//peopleID
		temp = Utils.int32ToByte(peopleID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}

        public byte[] createVersionDeviceSoftware(String deviceType, String versionDevice, int peopleID) {
            int size;
            byte[] result,temp;
            int index;

            size = 4 + Utils.getStringSize("IMAP.Net.VersionDeviceSoftware") + Utils.getStringSize(deviceType) + 
                   Utils.getStringSize(versionDevice) + 4 ;

            //������� ������ ����
            result = new byte[size];
            //��������� �����
            index = 0;
            //������ ������
            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //��� ������
            temp = Utils.getStringByte("IMAP.Net.VersionDeviceSoftware");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }

            //deviceType
            temp = Utils.getStringByte(deviceType);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }

            //versionDevice
            temp = Utils.getStringByte(versionDevice);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            
            //peopleID
            temp = Utils.int32ToByte(peopleID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            return result;
    }
        
        public byte[] createReqPreOrders(int peopleID)
        {
           String packetName; 
           if (BuildInfo.DISP_ORDER_NUMBER > 2) {
               packetName = "IMAP.Net.GetPrelimOrders";
           } else {
               packetName = "IMAP.Net.GetPreliminaryOrders";
           }
           
            int size,index = 0;
            size = 4 + Utils.getStringSize(packetName) + 4;

            byte[] result = new byte[size];
            //Размер
            byte[] temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }

            //Название пакета
            temp = Utils.getStringByte(packetName);

            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }

            //peopleID
            temp = Utils.int32ToByte(peopleID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            return result;
        }

        public byte[] createBodyPPSOrderCancelRequest(int orderID,int peopleID)
        {
            int size;
            byte[] result,temp;
            int index;
            //���������� ������ �������
            size = 4 + Utils.getStringSize("IMAP.Net.PPSOrderCancelRequest") +  4 + 4;
            //������� ������ ����
            result = new byte[size];
            //��������� �����
            index = 0;
            //������ ������
            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //��� ������
            temp = Utils.getStringByte("IMAP.Net.PPSOrderCancelRequest");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //orderID
            temp = Utils.int32ToByte(orderID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }

            //peopleID
            temp = Utils.int32ToByte(peopleID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            return result;
        }

         public byte[] createBodyOrderCancel(int orderID, String reason, int peopleID)
         {
            int size;
            byte[] result,temp;
            int index;

            size = 4 + Utils.getStringSize("IMAP.Net.OrderCancel") + 4 + Utils.getStringSize(reason) + 4 ;

            //������� ������ ����
            result = new byte[size];
            //��������� �����
            index = 0;
            //������ ������
            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //��� ������
            temp = Utils.getStringByte("IMAP.Net.OrderCancel");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //orderID
            temp = Utils.int32ToByte(orderID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }

            //reason
            temp = Utils.getStringByte(reason);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }

            //peopleID
            temp = Utils.int32ToByte(peopleID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            return result;
         }

        public byte[] createBodyPickingUpCharge(int orderID, int peopleID)
        {
            int size;
            byte[] result,temp;
            int index;

            size = 4 + Utils.getStringSize("IMAP.Net.PickingUpCharge") + 4 + 4 ;

            //������� ������ ����
            result = new byte[size];
            //��������� �����
            index = 0;
            //������ ������
            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //��� ������
            temp = Utils.getStringByte("IMAP.Net.PickingUpCharge");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //orderID
            temp = Utils.int32ToByte(orderID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }

            //peopleID
            temp = Utils.int32ToByte(peopleID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            return result;
        }
        
        public byte[] createBodyCW_ConnectDriverClient(int orderID, int peopleID)
        {
            int size;
            byte[] result,temp;
            int index;

            size = 4 + Utils.getStringSize("IMAP.Net.CW_ConnectDriverClient") + 4 + 4 ;

            //������� ������ ����
            result = new byte[size];
            //��������� �����
            index = 0;
            //������ ������
            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //��� ������
            temp = Utils.getStringByte("IMAP.Net.CW_ConnectDriverClient");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //orderID
            temp = Utils.int32ToByte(orderID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }

            //peopleID
            temp = Utils.int32ToByte(peopleID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            return result;
        }

	public byte[] createBodyOrderAnswer(int orderID,String reason,String addition,int peopleID)
	{
		int size;
		byte[] result,temp;
		int index;
		//���������� ������ �������
		size = 4 + Utils.getStringSize("IMAP.Net.OrderAnswer") + 4 + Utils.getStringSize(reason) + Utils.getStringSize(addition) + 4 ;
		//������� ������ ����
		result = new byte[size];
		//��������� �����
		index = 0;
		//������ ������
		temp = Utils.int32ToByte(size-4);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��� ������
		temp = Utils.getStringByte("IMAP.Net.OrderAnswer");
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//orderID
		temp = Utils.int32ToByte(orderID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//reason
		temp = Utils.getStringByte(reason);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//addition
		temp = Utils.getStringByte(addition);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//peopleID
		temp = Utils.int32ToByte(peopleID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}
	
	public byte[] createGetWorkReport(long from,long to,int peopleID)
	{
		byte[] result,temp;
		int index,size;
		//���������� ������ �������
		size = 4 + Utils.getStringSize("IMAP.Net.GetWorkReport") + 8 + 8 + 4;
		//������� ������ ����
		result = new byte[size];
		//��������� �����
		index = 0;
		//������ ������
		temp = Utils.int32ToByte(size-4);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��� ������
		temp = Utils.getStringByte("IMAP.Net.GetWorkReport");
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//from
		temp = Utils.longToByte(from);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//to
		temp = Utils.longToByte(to);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//peopleID
		temp = Utils.int32ToByte(peopleID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}
	
	public byte[] createBodyGetDriverParkingPosition(int peopleID)
	{
		byte[] result,temp;
		int index,size;
		//���������� ������ �������
		size = 4 + Utils.getStringSize("IMAP.Net.GetDriverParkingPosition") + 4 ;
		//������� ������ ����
		result = new byte[size];
		//��������� �����
		index = 0;
		//������ ������
		temp = Utils.int32ToByte(size-4);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��� ������
		temp = Utils.getStringByte("IMAP.Net.GetDriverParkingPosition");
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//peopleID
		temp = Utils.int32ToByte(peopleID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}
	
        public byte[] createChangeDriverState(String state, int orderID, int peopleID) {
            byte[] result,temp;
            int index,size;
            
            size = 4 + Utils.getStringSize("IMAP.Net.PPSChangeState") + Utils.getStringSize(state) + 4 + 4;
            result = new byte[size];
            index = 0;
            
            //Size
            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            
            temp = Utils.getStringByte("IMAP.Net.PPSChangeState");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            
            //state
            temp = Utils.getStringByte(state);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            
            //orderID
            temp = Utils.int32ToByte(orderID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            
            //peopleID
            temp = Utils.int32ToByte(peopleID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            
            return result;
        }
        
        public byte[] createGetDriverState(int peopleID) {
            byte[] result,temp;
            int index,size;
            
            size = 4 + Utils.getStringSize("IMAP.Net.GetDriverState") + 4 + 4;
            result = new byte[size];
            index = 0;
            
            //Size
            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            
            temp = Utils.getStringByte("IMAP.Net.GetDriverState");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //peopleID
            temp = Utils.int32ToByte(peopleID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
           
            //Какой то костыль
            for (int i = 0; i < 4; ++i) {
                result[index++] = 0;
            }
            
            return result;
        }
        
        public byte[] createBodyRequestAir(int peopleID) {
            byte[] result,temp;
            int index,size;
            //���������� ������ �������
            size = 4 + Utils.getStringSize("IMAP.Net.RequestAir") + 4;
            //������� ������ ����
            result = new byte[size];
            //��������� �����
            index = 0;
            //������ ������
            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //��� ������
            temp = Utils.getStringByte("IMAP.Net.RequestAir");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //peopleID
            temp = Utils.int32ToByte(peopleID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            return result;
        }
         
        public byte[] createBodyGetPPCSettingsXML(int peopleID) {
            byte[] result,temp;
            int index,size;
            //���������� ������ �������
            size = 4 + Utils.getStringSize("IMAP.Net.GetPPCSettingsXML") + 4;
            //������� ������ ����
            result = new byte[size];
            //��������� �����
            index = 0;
            //������ ������
            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //��� ������
            temp = Utils.getStringByte("IMAP.Net.GetPPCSettingsXML");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //peopleID
            temp = Utils.int32ToByte(peopleID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            return result;
        }
        
	public byte[] createBodyGetPPCSettings(int peopleID)
	{
		byte[] result,temp;
		int index,size;
		//���������� ������ �������
		size = 4 + Utils.getStringSize("IMAP.Net.GetPPCSettings") + 4;
		//������� ������ ����
		result = new byte[size];
		//��������� �����
		index = 0;
		//������ ������
		temp = Utils.int32ToByte(size-4);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��� ������
		temp = Utils.getStringByte("IMAP.Net.GetPPCSettings");
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//peopleID
		temp = Utils.int32ToByte(peopleID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}
	
	public byte[] createBodyGetTaxiParkings(int peopleID)
	{
		byte[] result,temp;
		int index,size;
		//���������� ������ �������
		size = 4 + Utils.getStringSize("IMAP.Net.GetTaxiParkings") + 4 ;
		//������� ������ ����
		result = new byte[size];
		//��������� �����
		index = 0;
		//������ ������
		temp = Utils.int32ToByte(size-4);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��� ������
		temp = Utils.getStringByte("IMAP.Net.GetTaxiParkings");
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//peopleID
		temp = Utils.int32ToByte(peopleID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}
	
	public byte[] createBodyUpdateJavaConnectionState(int peopleID)
	{
		byte[] result,temp;
		int index,size;
		//���������� ������ �������
		size = 4 + Utils.getStringSize("IMAP.Net.UpdateJavaConnectionState") + 4 ;
		//������� ������ ����
		result = new byte[size];
		//��������� �����
		index = 0;
		//������ ������
		temp = Utils.int32ToByte(size-4);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��� ������
		temp = Utils.getStringByte("IMAP.Net.UpdateJavaConnectionState");
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//peopleID
		temp = Utils.int32ToByte(peopleID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}
	
	public byte[] createBodyGetTaxiParkingsLastChangeDate(int peopleID)
	{
		byte[] result,temp;
		int index,size;
		//���������� ������ �������
		size = 4 + Utils.getStringSize("IMAP.Net.GetTaxiParkingsLastChangeDate") + 4 ;
		//������� ������ ����
		result = new byte[size];
		//��������� �����
		index = 0;
		//������ ������
		temp = Utils.int32ToByte(size-4);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��� ������
		temp = Utils.getStringByte("IMAP.Net.GetTaxiParkingsLastChangeDate");
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//peopleID
		temp = Utils.int32ToByte(peopleID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}
	
        public byte[] createGetBalanceData(int peopleID)
        {
            byte[] result,temp;
            int index,size;
            //���������� ������ �������
            size = 4 + Utils.getStringSize("IMAP.Net.GetCSBalance") + 4 ;
            //������� ������ ����
            result = new byte[size];
            //��������� �����
            index = 0;
            //������ ������
            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //��� ������
            temp = Utils.getStringByte("IMAP.Net.GetCSBalance");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //peopleID
            temp = Utils.int32ToByte(peopleID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            return result;
        }
        
	public byte[] createUnRegisterOnTaxiParking(int peopleID)
	{
            byte[] result,temp;
            int index,size;
            //���������� ������ �������
            size = 4 + Utils.getStringSize("IMAP.Net.UnRegisterOnTaxiParking") + 4 ;
            //������� ������ ����
            result = new byte[size];
            //��������� �����
            index = 0;
            //������ ������
            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //��� ������
            temp = Utils.getStringByte("IMAP.Net.UnRegisterOnTaxiParking");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //peopleID
            temp = Utils.int32ToByte(peopleID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            return result;
	}
	
	public byte[] createGetTaxiParkingStatistic(int peopleID)
	{
		byte[] result,temp;
		int index,size;
		//���������� ������ �������
		size = 4 + Utils.getStringSize("IMAP.Net.GetTaxiParkingStatistic") + 4 ;
		//������� ������ ����
		result = new byte[size];
		//��������� �����
		index = 0;
		//������ ������
		temp = Utils.int32ToByte(size-4);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��� ������
		temp = Utils.getStringByte("IMAP.Net.GetTaxiParkingStatistic");
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//peopleID
		temp = Utils.int32ToByte(peopleID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}
	
	public byte[] createTrackContinue(int orderID,int peopleID)
	{
		byte[] result,temp;
		int index,size;
		//���������� ������ �������
		size = 4 + Utils.getStringSize("IMAP.Net.TrackContinue") + 4 + 4 ;
		//������� ������ ����
		result = new byte[size];
		//��������� �����
		index = 0;
		//������ ������
		temp = Utils.int32ToByte(size-4);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��� ������
		temp = Utils.getStringByte("IMAP.Net.TrackContinue");
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//orderID
		temp = Utils.int32ToByte(orderID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//peopleID
		temp = Utils.int32ToByte(peopleID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}
	
	public byte[] createDriverWaiting(int orderID,int delay,int peopleID)
	{
		byte[] result,temp;
		int index,size;
		//���������� ������ �������
		size = 4 + Utils.getStringSize("IMAP.Net.DriverWaiting")+ 4 + 4 + 4 ;
		//������� ������ ����
		result = new byte[size];
		//��������� �����
		index = 0;
		//������ ������
		temp = Utils.int32ToByte(size-4);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��� ������
		temp = Utils.getStringByte("IMAP.Net.DriverWaiting");
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//orderID
		temp = Utils.int32ToByte(orderID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//delay
		temp = Utils.int32ToByte(delay);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//peopleID
		temp = Utils.int32ToByte(peopleID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}

        public byte[] createRefusePreliminaryOrder(int orderID, String callSign, int peopleID) {
            byte[] result,temp;
            int index,size;
            size = 4 + Utils.getStringSize("IMAP.Net.RefusePreliminaryOrder") + Utils.getStringSize(callSign) + 4 + 4;

            result = new byte[size];
            //��������� �����
            index = 0;

            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                result[index++] = temp[i];
            }

            temp = Utils.getStringByte("IMAP.Net.RefusePreliminaryOrder");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            
            //orderID
            temp = Utils.int32ToByte(orderID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }

            temp = Utils.getStringByte(callSign);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }

            //peopleID
            temp = Utils.int32ToByte(peopleID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }

            return result;
        }
        
        public byte[] createSignPreliminaryOrder(int orderID,String callSign, int peopleID)
        {
            byte[] result,temp;
            int index,size;
            size = 4 + Utils.getStringSize("IMAP.Net.SignPreliminaryOrder") + Utils.getStringSize(callSign) + 4 + 4;

            result = new byte[size];
            //��������� �����
            index = 0;

            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                result[index++] = temp[i];
            }

            temp = Utils.getStringByte("IMAP.Net.SignPreliminaryOrder");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            
            //orderID
            temp = Utils.int32ToByte(orderID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }

            temp = Utils.getStringByte(callSign);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }

            //peopleID
            temp = Utils.int32ToByte(peopleID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }

            return result;
        }

        public byte[] createFeedTime(int orderID, int time, int peopleID)
        {
            byte[] result,temp;
            int index,size;
            //���������� ������ �������
            size = 4 + Utils.getStringSize("IMAP.Net.PPSOrderDriverTimeUpdate")+ 4 + 4 + 4;

            result = new byte[size];
            //��������� �����
            index = 0;
            //������ ������
            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                result[index++] = temp[i];
            }

            temp = Utils.getStringByte("IMAP.Net.PPSOrderDriverTimeUpdate");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //orderID
            temp = Utils.int32ToByte(orderID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //DriverTime
            temp = Utils.int32ToByte(time);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }

            //peopleID
            temp = Utils.int32ToByte(peopleID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }

            return result;
        }

	public byte[] createDriverDelay(int orderID,int delay,int peopleID)
	{
		byte[] result,temp;
		int index,size;
		//���������� ������ �������
		size = 4 + Utils.getStringSize("IMAP.Net.DriverDelay")+ 4 + 4 + 4 ;
		//������� ������ ����
		result = new byte[size];
		//��������� �����
		index = 0;
		//������ ������
		temp = Utils.int32ToByte(size-4);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��� ������
		temp = Utils.getStringByte("IMAP.Net.DriverDelay");
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//orderID
		temp = Utils.int32ToByte(orderID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//delay
		temp = Utils.int32ToByte(delay);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//peopleID
		temp = Utils.int32ToByte(peopleID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}

         public byte[] createGetOrdersOfDriver(String filter, int peopleID) {
             byte[] result,temp;
            int index,size;
            //���������� ������ �������
            size = 4 + Utils.getStringSize("IMAP.Net.GetOrdersOfDriver") + Utils.getStringSize(filter) + 4;
            //Формируем пакет
            result = new byte[size];
            index = 0;
            //Записываем размер пакета
            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                result[index++] = temp[i];
            }
            //Записывем имя пакета
            temp = Utils.getStringByte("IMAP.Net.GetOrdersOfDriver");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //WhereStatement
            temp = Utils.getStringByte(filter);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //peopleID
            temp = Utils.int32ToByte(peopleID);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            return result;
         }
        
        public byte[] createGetOrders(String filter)
        {
            byte[] result,temp;
            int index,size;
            //���������� ������ �������
            size = 4 + Utils.getStringSize("IMAP.Net.GetOrders") + Utils.getStringSize(filter);
            //Формируем пакет
            result = new byte[size];
            index = 0;
            //Записываем размер пакета
            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                result[index++] = temp[i];
            }
            //Записывем имя пакета
            temp = Utils.getStringByte("IMAP.Net.GetOrders");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //WhereStatement
            temp = Utils.getStringByte(filter);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            return result;
        }

        public byte[] createSQL(String SQLString)
        {   
            byte[] result,temp;
            int index,size;
            //���������� ������ �������
            size = 4 + Utils.getStringSize("IMAP.Net.ExequteQuerryCommand") + Utils.getStringSize(SQLString);
            //Формируем пакет
            result = new byte[size];
            index = 0;
            //Записываем размер пакета
            temp = Utils.int32ToByte(size-4);
            for (int i=0;i<temp.length;i++)
            {
                result[index++] = temp[i];
            }
            //Записывем имя пакета
            temp = Utils.getStringByte("IMAP.Net.ExequteQuerryCommand");
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            //SqlCommand 
            temp = Utils.getStringByte(SQLString);
            for (int i=0;i<temp.length;i++)
            {
                    result[index++] = temp[i];
            }
            return result;
        }

	public byte[] createPassengerOut(int orderID,int delay,int peopleID)
	{
		byte[] result,temp;
		int index,size;
		//���������� ������ �������
		size = 4 + Utils.getStringSize("IMAP.Net.PassengerOut")+ 4 + 4 + 4 ;
		//������� ������ ����
		result = new byte[size];
		//��������� �����
		index = 0;
		//������ ������
		temp = Utils.int32ToByte(size-4);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��� ������
		temp = Utils.getStringByte("IMAP.Net.PassengerOut");
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//orderID
		temp = Utils.int32ToByte(orderID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//delay
		temp = Utils.int32ToByte(delay);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//peopleID
		temp = Utils.int32ToByte(peopleID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}
	
	public byte[] createDispatcherCall(int peopleID)
	{
		byte[] result,temp;
		int index,size;
		//���������� ������ �������
		size = 4 + Utils.getStringSize("IMAP.Net.DispatcherCall") + 4 ;
		//������� ������ ����
		result = new byte[size];
		//��������� �����
		index = 0;
		//������ ������
		temp = Utils.int32ToByte(size-4);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��� ������
		temp = Utils.getStringByte("IMAP.Net.DispatcherCall");
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//peopleID
		temp = Utils.int32ToByte(peopleID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}

	public byte[] createPPCUnRegisterOnRelay(boolean fromDriver,String type,int peopleID)
	{
		byte[] result,temp;
		int index,size;
		//���������� ������ �������
		size = 4 + Utils.getStringSize("IMAP.Net.PPCUnRegisterOnRelay") + 1 + Utils.getStringSize(type) + 4 ;
		//������� ������ ����
		result = new byte[size];
		//��������� �����
		index = 0;
		//������ ������
		temp = Utils.int32ToByte(size-4);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//��� ������
		temp = Utils.getStringByte("IMAP.Net.PPCUnRegisterOnRelay");
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//fromDriver
		result[index++] = Utils.boolToByte(fromDriver);
		//type
		temp = Utils.getStringByte(type);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		//peopleID
		temp = Utils.int32ToByte(peopleID);
		for (int i=0;i<temp.length;i++)
		{
			result[index++] = temp[i];
		}
		return result;
	}
}
